.. _cmlSxGetCorrection: cmlSxGetCorrection ================================ -------------------------------- SYNOPSYS ````````````` .. code-block:: none VT_I4 cmlSxGetCorrection([in] VT_I4 BoardID, [in] VT_I4 Axis, [in] VT_I4 CorrMode, [in] VT_R8 CorrAmount, [in] VT_R8 CorrVel, [in] VT_I4 CntrMask) DESCRIPTION ````````````` - cmlSxGetCorrection() 함수는 백래쉬/슬립 ë³´ì •ì— ëŒ€í•œ 현재 ì„¤ì •ê°’ì„ ì½ì–´ë“¤ì´ëŠ” 함수입니다. \ - ì´ í•¨ìˆ˜ì˜ ì‚¬ìš©ê³¼ í˜¸ì¶œì— ìžˆì–´, ì œê³µëœ ãˆœì»¤ë¯¸ì¡°ì•„ì˜ í•¨ìˆ˜ í—¤ë” Visual Basic ì—서는 í•¨ìˆ˜ì˜ ì²¨ë‘ì–´ cml ê°€ 붙지 않습니다. PARAMETER ````````````` â–¶ BoardID: 사용ìžê°€ ì„¤ì •í•œ 디바ì´ìŠ¤(ë³´ë“œ) ID. â–¶ Axis: 사용ìžê°€ ì œì–´í•˜ê³ ìž í•˜ëŠ” 축 번호. â–¶ CorrMode : cmlSxGetCorrectioní•¨ìˆ˜ì˜ ì¸ìžì´ë©°, ë°˜í™˜ê°’ì€ ë‹¤ìŒê³¼ 같습니다. .. csv-table:: :widths: 10 90 :header-rows: 1 :stub-columns: 0 BIT No., Meaning 0 (cmlCORR_DISABLE), ë³´ì •ê¸°ëŠ¥ì„ ë¹„í™œì„±í™”í•©ë‹ˆë‹¤. 1 (cmlCORR_BACKLASH), ë³´ì •ëª¨ë“œë¥¼ 백래쉬 ë³´ì •ëª¨ë“œë¡œ ë™ìž‘중입니다. 2 (cmlCORR_SLIP), ë³´ì •ëª¨ë“œë¥¼ 슬립 ë³´ì •ëª¨ë“œë¡œ ë™ìž‘중입니다. â–¶ CorrAmount : cmlSxGetCorrection í•¨ìˆ˜ì˜ ì¸ìžì´ë©°, ë³´ì • íŽ„ìŠ¤ì˜ ìˆ˜ë¥¼ 반환합니다. â–¶ CorrVel : cmlSxGetCorrection í•¨ìˆ˜ì˜ ì¸ìžì´ë©°, ë³´ì •íŽ„ìŠ¤ì˜ ì£¼íŒŒìˆ˜ë¥¼ 반환합니다. â–¶ CntrMask : cmlSxGetCorrection í•¨ìˆ˜ì˜ ì¸ìžì´ë©°, ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ë˜ëŠ” ë™ì•ˆì— ê° ì¹´ìš´í„°ì˜ ë™ìž‘여부를 비트별로 반환합니다. ê° ë¹„íŠ¸ê°€ 나타내는 ê°’ì€ ì•„ëž˜ 표를 ì°¸ê³ í•˜ì‹ì‹œì˜¤. .. csv-table:: :widths: 10 90 :header-rows: 1 :stub-columns: 0 Value, Meaning BIT0, 1: ë³´ì •íŽ„ìŠ¤ ì¶œë ¥ì‹œì— Command Counter ê°€ ë™ìž‘하는 모드입니다. BIT1, 1 : ë³´ì •íŽ„ìŠ¤ ì¶œë ¥ì‹œì— Feedback Counterê°€ ë™ìž‘하는 모드입니다. RETURN VALUE ````````````` +------------+-----------+ | Value | Meaning | +============+===========+ | ìŒìˆ˜ | 수행 실패 | +------------+-----------+ | ERR_NONE | 수행 성공 | +------------+-----------+ EXAMPLE ````````` .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ long BoardID = 0; 다ìŒì˜ ì˜ˆì œëŠ” 백래쉬 ë³´ì •ì„ ì ìš©í• ë•Œì˜ ë™ìž‘ì— ëŒ€í•œ 설명입니다. 본 예ì—서는 “Unit distanceâ€ì™€ “Unit speedâ€ê°€ ê°ê° 1ë¡œ ì„¤ì •ë˜ì—ˆìŒì„ ê°€ì •í•©ë‹ˆë‹¤. // ë°±ëž˜ì‰¬ë³´ì • 모드로 ì„¤ì • (ë³´ì •íŽ„ìŠ¤ìˆ˜:1000, ë³´ì •íŽ„ìŠ¤ì¶œë ¥ì†ë„:1000 PPS) // cmlSxGetCorrection (BoardID, 0, cmlORR_BACK, 1000, 1000, 0x0); //////////////////////////////////////////////////////////////// // ì´ì „ì— (-)ë°©í–¥ ì´ë™ì„ 수행하였다면 아래ì—ì„œ 백래쉬 ë³´ì •ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. // 1000 PPSì˜ ì†ë„ë¡œ (+)1000펄스를 ì¶œë ¥í•œ í›„ì— ì§€ì •í•œ SxMove()ê°€ 수행ë©ë‹ˆë‹¤. cmlSxMove(BoardID, 0, 10000); // ì´ë™ë°©í–¥ì´ ì´ì „ê³¼ ë™ì¼í•˜ë¯€ë¡œ 아래ì—서는 ë°±ëž˜ì‰¬ë³´ì •ì„ í•˜ì§€ 않습니다. cmlSxMove(BoardID, 0, 10000); // ì´ë™ë°©í–¥ì´ ì´ì „ê³¼ ë™ì¼í•˜ë¯€ë¡œ 아래ì—서는 ë°±ëž˜ì‰¬ë³´ì •ì„ í•˜ì§€ 않습니다. cmlSxMove(BoardID, 0, 10000); //////////////////////////////////////////////////////////////// // ì´ë™ë°©í–¥ì´ ì „í™˜ë˜ë¯€ë¡œ 아래ì—ì„œ 백래쉬 ë³´ì •ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. 1000 PPSì˜ ì†ë„ë¡œ ( )1000 펄스를 ì¶œë ¥í•œ // í›„ì— ì§€ì •í•œ SxMove()ê°€ 수행ë©ë‹ˆë‹¤. cmlSxMove(BoardID, 0, -10000); // ì´ë™ë°©í–¥ì´ ì´ì „ê³¼ ë™ì¼í•˜ë¯€ë¡œ 아래ì—서는 ë°±ëž˜ì‰¬ë³´ì •ì„ í•˜ì§€ 않습니다. cmlSxMove(BoardID, 0, -10000); .. code-block:: c++ :linenos: Visual Basic '다ìŒì˜ ì˜ˆì œëŠ” 백래쉬 ë³´ì •ì„ ì ìš©í• ë•Œì˜ ë™ìž‘ì— ëŒ€í•œ 설명입니다. '본 예ì—서는 "Unit distance"와 "Unit speed"ê°€ ê°ê° 1ë¡œ ì„¤ì •ë˜ì—ˆìŒì„ ê°€ì •í•©ë‹ˆë‹¤. „BoardID 는 0으로 ê°€ì •í•©ë‹ˆë‹¤. '// ë°±ëž˜ì‰¬ë³´ì • 모드로 ì„¤ì • (ë³´ì •íŽ„ìŠ¤ìˆ˜:1000, ë³´ì •íŽ„ìŠ¤ì¶œë ¥ì†ë„:1000 PPS) Call SxSetCorrection(BoardID, 0, cmlCORR_BACK, 1000, 1000, 0) '/////////////////////////////////////////////////////////////// '// ì´ì „ì— (-)ë°©í–¥ ì´ë™ì„ 수행하였다면 아래ì—ì„œ 백래쉬 ë³´ì •ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. '// 1000 PPSì˜ ì†ë„ë¡œ (+)1000펄스를 ì¶œë ¥í•œ í›„ì— ì§€ì •í•œ SxMove()ê°€ ‘// 수행ë©ë‹ˆë‹¤. Call SxMove(BoardID, 0, 10000) '// ì´ë™ë°©í–¥ì´ ì´ì „ê³¼ ë™ì¼í•˜ë¯€ë¡œ 아래ì—서는 ë°±ëž˜ì‰¬ë³´ì •ì„ í•˜ì§€ 않습니다. Call SxMove(BoardID, 0, 10000) '// ì´ë™ë°©í–¥ì´ ì´ì „ê³¼ ë™ì¼í•˜ë¯€ë¡œ 아래ì—서는 ë°±ëž˜ì‰¬ë³´ì •ì„ í•˜ì§€ 않습니다. Call SxMove(BoardID, 0, 10000) '/////////////////////////////////////////////////////////////// '// ì´ë™ë°©í–¥ì´ ì „í™˜ë˜ë¯€ë¡œ 아래ì—ì„œ 백래쉬 ë³´ì •ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤. 1000 PPSì˜ 'ì†ë„ë¡œ(-)1000펄스를 ì¶œë ¥í•œ í›„ì— ì§€ì •í•œ SxMove()ê°€ 수행ë©ë‹ˆë‹¤. Call SxMove(BoardID, 0, -10000) '// ì´ë™ë°©í–¥ì´ ì´ì „ê³¼ ë™ì¼í•˜ë¯€ë¡œ 아래ì—서는 ë°±ëž˜ì‰¬ë³´ì •ì„ í•˜ì§€ 않습니다. Call SxMove(BoardID, 0, -10000) EXAMPLE2 ``````````` - 다ìŒì˜ ì˜ˆì œëŠ” ìŠ¬ë¦½ë³´ì •ì„ ì ìš©í• ë•Œì˜ ë™ìž‘ì— ëŒ€í•œ 설명입니다. 본 예ì—서는 “Unit distanceâ€ì™€ “Unit speedâ€ê°€ ê°ê° 1 ë¡œ ì„¤ì •ë˜ì—ˆìŒì„ ê°€ì •í•©ë‹ˆë‹¤. .. code-block:: c++ :linenos: C/C++ //BoardID는 0으로 ê°€ì •í•©ë‹ˆë‹¤. // ìŠ¬ë¦½ë³´ì • 모드로 ì„¤ì • (ë³´ì •íŽ„ìŠ¤ìˆ˜:1000, ë³´ì •íŽ„ìŠ¤ì¶œë ¥ì†ë„:1000 PPS) // // (+)1000 íŽ„ìŠ¤ì˜ ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ëœ í›„ì— SxMove()ê°€ 수행ë©ë‹ˆë‹¤ cmlSxMove(BoardID, 0, 10000); // (+)1000 íŽ„ìŠ¤ì˜ ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ëœ í›„ì— SxMove()ê°€ 수행ë©ë‹ˆë‹¤ cmlSxMove(BoardID, 0, 10000); // (-)1000 íŽ„ìŠ¤ì˜ ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ëœ í›„ì— SxMove()ê°€ 수행ë©ë‹ˆë‹¤ cmlSxMove(BoardID, 0, -10000); // (-)1000 íŽ„ìŠ¤ì˜ ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ëœ í›„ì— SxMove()ê°€ 수행ë©ë‹ˆë‹¤ cmlSxMove(BoardID, 0, -10000); .. code-block:: c++ :linenos: Visual Basic „BoardID 는 0으로 ê°€ì •í•©ë‹ˆë‹¤. '// ìŠ¬ë¦½ë³´ì • 모드로 ì„¤ì • (ë³´ì •íŽ„ìŠ¤ìˆ˜:1000, ë³´ì •íŽ„ìŠ¤ì¶œë ¥ì†ë„:1000 PPS) Call cmlSxGetCorrection(BoardID, 0, cmlORR_SLIP, 1000, 1000, 0) '// (+)1000 íŽ„ìŠ¤ì˜ ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ëœ í›„ì— SxMove()ê°€ 수행ë©ë‹ˆë‹¤ Call cmlSxMove(BoardID, 0, 10000) '// (+)1000 íŽ„ìŠ¤ì˜ ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ëœ í›„ì— SxMove()ê°€ 수행ë©ë‹ˆë‹¤ Call cmlSxMove(BoardID, 0, 10000) '// (-)1000 íŽ„ìŠ¤ì˜ ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ëœ í›„ì— SxMove()ê°€ 수행ë©ë‹ˆë‹¤ Call cmlSxMove(BoardID, 0, -10000) '// (-)1000 íŽ„ìŠ¤ì˜ ë³´ì •íŽ„ìŠ¤ê°€ ì¶œë ¥ëœ í›„ì— SxMove()ê°€ 수행ë©ë‹ˆë‹¤ Call cmlSxMove(BoardID, 0, -10000)